4
תגובות

הדפסת XML עם הזחה

פתח mmm ,
שלום חברים, אני כותב ערכים לתוך קובץ XML.
זה הקוד שלי:
$xml = simplexml_load_file('lang.xml');
  $xmlTextID = $xml->text->count() + 1;
  $myxml = $xml->addChild('text');
  $myxml->addAttribute('id', $xmlTextID);
  $myxml->addChild('he', $_POST['he']);
  $myxml->addChild('en', $_POST['en']);
  if(file_put_contents('lang.xml', $xml->asXML())) {


תתעלמו מהתנאי.
הבעיה שזה מכניס את התגים לקובץ בלי ירידות שורה, ובלי הזחה, יש למישהו מושג איך לעשות את זה?

4 תשובות

avatar ענה intval ב 17 ליולי 2013 #

תצטרך להשתמש ב DomDocument

$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($myxml->asXML());
echo $dom->saveXML();

avatar ענה mmm ב 17 ליולי 2013 #

האמת שראיתי את זה, והשתמשתי בזה, רק שלא השתמשתי ב-DomDocument, דברים מוזרים קרו.
תודה רבה אלכס.

avatar ענה mmm ב 17 ליולי 2013 #

$xml  = new DOMDocument('1.0');
  $xml ->load('lang.xml');
  $xml ->preserveWhiteSpace = false;
  $xml->formatOutput = true;
  $xpath = new DOMXPath($xml);    
  $results = $xpath->query('/lang');  
  $baz_node_of_xml = $results->item(0);
  $new_node = $xml->createElement('text');
  $text_node = $xml->createTextNode('fdfd');
  $new_node->appendChild($text_node);
  $baz_node_of_xml->appendChild($new_node);
file_put_contents('lang.xml', $xml->saveXML())


זה הקוד החדש, לא עובד, אני עדיין מקבל את הכל בשורה אחת, אחרי שעתיים שניסיתי להבין איך לעבוד עם DOMDocument ששונה לגמרי מSIMPLExml.
יש לך מושג מה יכול להיות הפתרון?

avatar ענה mmm ב 17 ליולי 2013 #

הטעות שלי הייתה שהייתי צריך לשים את ה load() רק אחרי הpreserveWhiteSpace וה-formatOutput.
עכשיו עובד לי :)